package jp.ac.waseda.cs.washi.game.api;

/**
 * AIプログラムから取得できる全てのゲーム情報を提供します。
 * （なお、このクラスが返すオブジェクトは常に同じオブジェクトを返します。つまり参照先は変化しません。）
 */
public final class GameInfo {
	private MapInfo _mapInfo;
	private CharaInfo _charaInfo;
	private CharaInfo _enemyInfo;
	private GameTimerInfo _timer;

	public GameInfo(MapInfo mapInfo, CharaInfo charaInfo,
			CharaInfo enemyInfo, GameTimerInfo timerInfo) {
		_mapInfo = mapInfo;
		_charaInfo = charaInfo;
		_enemyInfo = enemyInfo;
		_timer = timerInfo;
	}

	/**
	 * マップ情報を返します。
	 * 
	 * @return MapIndo
	 */
	public MapInfo getMap() {
		return _mapInfo;
	}

	/**
	 * 自分のキャラクタ情報を返します。
	 * 
	 * @return 自分のキャラクタ情報
	 */
	public CharaInfo getPlayer() {
		return _charaInfo;
	}

	/**
	 * 敵のキャラクタ情報を返します。
	 * 
	 * @return 敵のキャラクタ情報
	 */
	public CharaInfo getEnemy() {
		return _enemyInfo;
	}

	/**
	 * ゲームスタートからの経過時間を返します。
	 * 
	 * @return ゲームスタートからの経過時間（ターン数）
	 */
	public int getCurrentTime() {
		return _timer.getTime();
	}

	/**
	 * ゲームの残り時間を返します。
	 * 
	 * @return ゲームの残り時間（ターン数）
	 */
	public int getRemainingTime() {
		return _timer.getRemainingTime();
	}
}
